package com.sys.service;

import com.sys.dto.PlanItemWithTaskDTO;
import com.sys.dto.PlanRequest;
import com.sys.entity.BizPlanItem;

import java.util.List;

public interface PlanService {
    /**
     * 保存用户的任务计划
     * 
     * @param planRequest 包含用户ID和任务项的计划请求
     */
    void savePlan(PlanRequest planRequest);

    /**
     * 获取用户当日的任务列表（包含任务详情）
     * 
     * @param userId 用户ID
     * @return 当日任务列表（包含任务详细信息）
     */
    List<PlanItemWithTaskDTO> getDailyTasks(Long userId);

    /**
     * 删除计划项（软删除）
     * 
     * @param planItemId 计划项ID
     * @param userId 用户ID（用于验证权限）
     */
    void deletePlanItem(Long planItemId, Long userId);

    /**
     * 获取用户的所有计划列表
     * 
     * @param userId 用户ID
     * @return 计划列表
     */
    java.util.List<com.sys.entity.BizPlan> getPlansByUserId(Long userId);

    /**
     * 删除计划（软删除）
     * 
     * @param planId 计划ID
     */
    void deletePlan(Long planId);

    /**
     * 根据ID获取计划详情
     * 
     * @param planId 计划ID
     * @return 计划详情
     */
    com.sys.entity.BizPlan getPlanById(Long planId);

    /**
     * 根据ID获取计划详情（包含任务列表）
     * 
     * @param planId 计划ID
     * @return 计划详情及任务列表
     */
    java.util.Map<String, Object> getPlanDetailWithTasks(Long planId);
}